#include <bits/stdc++.h>
using namespace std;
int n,m,T;
long long a[100005],b[100005];
int c[100005];
string t[30];
long long x[4],cnt=0;
long long ans[35];
int cd(int op)
{
    int anss=1;
    for(int i=1;i<=op;i++)
        anss*=2;
    return anss;
}
int pd(int i,int dep)
{
    if(dep==0) return c[1];
    for(int j=1;j<=cd(dep-1);j++)
        if((t[cnt-dep+1][j-1]=='0'&&a[c[2*j-1]]>=i-dep+1)||(t[cnt-dep+1][j-1]=='1'&&a[c[2*j]]<i-dep+1)) c[j]=c[2*j-1];
        else c[j]=c[2*j];
    return pd(i,dep-1);
}
int main()
{
    freopen("arena.in","r",stdin);
    freopen("arena.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        scanf("%lld",&a[i]);
        c[i]=i;
    }
    for(int i=1;i<=m;i++)
    {
        scanf("%lld",&b[i]);
        if(b[i]==1) b[i]=0;
    }
    int ii=n;
    while(ii!=0)
    {
        cnt++;
        ii>>=1;
        cin>>t[cnt];
    }
    scanf("%d",&T);
    scanf("%lld%lld%lld%lld",&x[0],&x[1],&x[2],&x[3]);
    for(int i=1;i<=n;i++)
        a[i]=(a[i] xor x[i%4]);
    for(int i=1;i<=cnt;i++)
    {
        int u=cd(i);
        for(int j=1;j<=m;j++)
            if(b[j]==u)
                b[j]=i;
        for(int j=1;j<=u;j++)
            c[j]=j;
        ans[i]=pd(i,i);
    }
    ans[0]=1;
    long long anss=ans[b[1]];
    for(int i=2;i<=m;i++)
    {
        anss=(anss xor (i*ans[b[i]]));
    }
    printf("%lld\n",anss);
    return 0;
}